package corpus;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import model.Classe;
import model.Texte;

public class ActionsTexteFichier {

		public static void parcoursFichiers(File folder, ArrayList<Classe> listeClasses){
			for (final File fileEntry : folder.listFiles()) {
				if (fileEntry.isDirectory()) {
					listeClasses.add(new Classe(fileEntry.getName(), 0, new ArrayList<Texte>()));
					parcoursFichiers(fileEntry, listeClasses);
				} else {
					if (fileEntry.getName().endsWith(".txt")){
						listeClasses.get(listeClasses.size()-1).getTextes().addAll(decouperFichier(fileEntry));
					}
				}
			}
		}

		public static ArrayList<Texte> decouperFichier(File file){
			BufferedReader br;
			ArrayList<Texte> listeTextes = new ArrayList<Texte>();
			StringBuffer texte = new StringBuffer();
			try {
				String sCurrentLine;
				br = new BufferedReader(new FileReader(file));
				while ((sCurrentLine = br.readLine()) != null) {
					if (sCurrentLine.startsWith("=====") && sCurrentLine.endsWith("=====")){
						listeTextes.add(new Texte(texte.toString()));
						texte = new StringBuffer();
					}else{
						texte.append(sCurrentLine);
						texte.append('\n');
					}
				}
				listeTextes.add(new Texte(texte.toString()));

				if (br != null){
					br.close();
				}
			} catch (FileNotFoundException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			return listeTextes;
		}

		public static void decouperMots(ArrayList<Texte> listeTextes){
			Pattern pattern = Pattern.compile("");
			for (Texte texte : listeTextes) {
				Matcher m = pattern.matcher(texte.getTexte());
				while (m.find()){
					String s = m.group();
					if (!texte.getMots().containsKey(s))
						texte.getMots().put(s, 1);
					else
						texte.getMots().put(s, texte.getMots().get(s)+1);
					System.out.println(s + " : " + texte.getMots().get(s));
				}
			}
		}


	}
